<template>
  <div>
    <common-head title="联系人列表"/>
    <van-address-list
      v-model="choseId"
      :list="lists"
      default-tag-text="默认"
      @add="onAdd"
      @edit="onEdit"
      @select="choseContact"
    />
  </div>
</template>

<script>
import CommonHead from '../../components/CommonHead.vue'
import { fetchContactLists } from '_api'
import { getToken } from '_utils'
let _from = ''
export default {
  name: 'contactLists',
  data () {
    return {
      choseId: -1, // 选中联系人的id
      lists: [] // 联系人列表
    }
  },
  created () {
    this.fetchContacts()
  },
  beforeRouteEnter (to, from, next) {
    if (from.path === '/order') {
      // 从订单页进来的
      _from = 'order'
    } else {
      _from = '其他'
      }
      next()
    },
    methods: {
    choseContact (contact) {
      if (_from === 'order') {
        this.$router.replace({
          path: '/order',
          query: {
            id: contact.id
          }
        })
      }
      // 切换联系人
      /*
        从订单页 进入 联系人列表，切换联系人时，会到订单页，并将 选中的联系人的id 传给 订单页
       */

    },
    onEdit (contact) {
      // 编辑联系人
      this.$router.push({
        path: '/contactUpdate',
        query: {
          id: contact.id
        }
      })
    },
    onAdd () {
      // 点击添加联系人
      this.$router.push('/contactAdd')
    },
    initChoseId () {
      // 获取选中联系人id
      /*
        联系人列表为空 啥都不干
        id等于默认联系人的id
        联系人列表中没有默认联系人 联系人列表中的第一个联系人的id
      */
      if (this.lists.length === 0) {
      //  联系人列表为空
        return false
      }
      // 判断是否有默认联系人 find findIndex
      const defaultContact = this.lists.find(contact => contact.isDefault)
      if (defaultContact) {
        this.choseId = defaultContact.id
      } else {
        this.choseId = this.lists[0].id
      }
    },
    fetchContacts () {
      // 获取所有联系人
      fetchContactLists({
        token: getToken()
      }).then(res => {
        // console.log(res)
        /*
          lists映射
        */
        if (res.data.code === 0) {
          const lists = res.data.data.result
          // 声明一个空数组
          const contacts = []
          lists.forEach(contact => {
            const obj = {}
            for (const key in contact) {
              if (key === 'linkMan') {
                obj.name = contact[key]
              } else if (key === 'mobile') {
                obj.tel = contact[key]
              } else {
                obj[key] = contact[key]
              }
            }
            contacts.push(obj)
          })
          this.lists = contacts
          // 处理默认联系人id
          this.initChoseId()
        }
      })
    }
  },
  components: { CommonHead }

}
</script>

<style lang="scss" scoped>

</style>
